#ifndef __LIBS_STAT_H__
#define __LIBS_STAT_H__

#include <types.h>

struct stat {
	uint32_t st_mode;					// protection mode and file type
	uint32_t st_nlinks;					// number of hard links
	uint32_t st_blocks;					// number of blocks file is using
	size_t st_size;						// file size (bytes)
};

#define S_IFMT			070000			// mask for type of file
#define S_IFREG			010000			// ordinary regular file
#define S_IFDIR			020000			// directory
#define S_IFLNK			030000			// symbolic link
#define S_IFCHR			040000			// character device
#define S_IFBLK			050000			// block device

#define S_ISREG(mode)					(((mode) & S_IFMT) == S_IFREG)		// regular file
#define S_ISDIR(mode)					(((mode) & S_IFMT) == S_IFDIR)		// directory
#define S_ISLNK(mode)					(((mode) & S_IFMT) == S_IFLNK)		// symlink
#define S_ISCHR(mode)					(((mode) & S_IFMT) == S_IFCHR)		// char device
#define S_ISBLK(mode)					(((mode) & S_IFMT) == S_IFBLK)		// block device

#endif /* !__LIBS_STAT_H__ */

